StReAm: Object-Oriented Programming of Stream Architectures Using PAM-Blox
نویسندگان
چکیده
Simplifying the programming models is paramount to the success of reconfigurable computing. We apply the principles of object-oriented programming to the design of stream architectures for reconfigurable computing. The resulting tool, StReAm, is a domain specific compiler on top of the object-oriented module generation environment PAM-Blox. Combining module generation with a high-level programming tool in C++ gives the programmer the convenience to explore the flexibility of FPGAs on the arithmetic level and write the algorithms in the same language and environment. Stream architectures consist of the pipelined dataflow graph mapped directly to hardware. Data streams through the implementation of the dataflow graph with only minimal control logic overhead. The main advantage of stream architectures is a clock-frequency equal to the data-rate leading to very low power consumption. StReAm takes C++ expressions and converts them to a pipelined, scheduled stream architecture, including FIFO buffers for intermediate storage. The state of PAM-Blox hardware objects includes size and scheduling attributes of the object. The StReAm abstraction of PAM-Blox can handle combinational, fully pipelined, and sequential (iterative) arithmetic units. We show a set of benchmarks from signal processing, encryption, image processing and 3D graphics in order to demonstrate the advantages of object-oriented programming of FPGAs.
منابع مشابه
Streaming Extensions for Object-Oriented Languages
Stream languages provide constructs to express different types of parallelism, such as pipeline parallelism, in a simple way. In the past, these languages were mainly used for the development of signal processing or graphics applications. We argue that the integration of stream programming concepts into universal object-oriented languages has great potential to simplify general-purpose parallel...
متن کاملPAM-Blox: High Performance FPGA Design for Adaptive Computing
PAM-Blox are object-oriented circuit generators on top of the PCI Pamette design environment, PamDC. Highperformance FPGA design for adaptive computing is simplified by using a hierarchy of optimized hardware objects described in C++. PAM-Blox consist of two major layers of abstraction. First, PamBlox are parameterizable simple elements such as counters and adders. Automatic placement of carry ...
متن کاملDynamic Circuit Generation for Boolean Satissability in an Object-oriented Design Environment
We apply our object-oriented design environment PAM-Blox to dynamic generation of circuits for re-conngurable computing. Our approach combines the structural hardware design environment with commercial synthesis of nite state machines (FSMs). The PAM-Blox environment features a well deened hardware object interface and the ability to control the placement of hand-optimized circuits. We integrat...
متن کاملObject-oriented Stream Programming Using Aspects: a High-productivity Programming Paradigm for Hybrid Platforms
متن کامل
PAM-Blox II: Design and Evaluation of C++ Module Generation for Computing with FPGAs
This paper explores the implications of integrating flexible module generation into a compiler for FPGAs. The objective is to improve the programmability of FPGAs, or in other words, the productivity of the FPGA programmer. We describe (1) the module generation library PAM-Blox II, the second generation of object-oriented module generators in C++, targeted at computing with FPGAs, and (2) examp...
متن کامل